package cn.com.utils;

import lombok.extern.slf4j.Slf4j;
import org.springframework.core.env.Environment;

/**
 * 获取配置工具类
 *
 * @author LiuGuodong
 * @date 2024/07/19
 */
@Slf4j
public class ConfigUtil {

    private static final Environment ENVIRONMENT = SpringContextHolder.getBean(Environment.class);

    /**
     * 获取配置值
     *
     * @param key 配置键
     * @return 配置值
     */
    public static String getConfig(String key) {
        String value = ENVIRONMENT.getProperty(key);
        return value != null ? value : "";
    }

    /**
     * 获取配置值或默认值
     *
     * @param key          配置键
     * @param defaultValue 默认值
     * @return 配置值或默认值
     */
    public static String getConfig(String key, String defaultValue) {
        String value = ENVIRONMENT.getProperty(key);
        return value != null ? value : defaultValue;
    }

    /**
     * 获取配置值或默认值（整数类型）
     *
     * @param key          配置键
     * @param defaultValue 默认值
     * @return 配置值或默认值（整数类型）
     */
    public static int getConfig(String key, int defaultValue) {
        String value = ENVIRONMENT.getProperty(key);
        if (value != null) {
            try {
                return Integer.parseInt(value);
            } catch (NumberFormatException e) {
                log.error("配置项{}的值{}不是整数类型", key, value);
            }
        }
        return defaultValue;
    }

    /**
     * 获取配置值或默认值（布尔类型）
     *
     * @param key          配置键
     * @param defaultValue 默认值
     * @return 配置值或默认值（布尔类型）
     */
    public static boolean getConfig(String key, boolean defaultValue) {
        String value = ENVIRONMENT.getProperty(key);
        if (value != null) {
            return Boolean.parseBoolean(value);
        }
        return defaultValue;
    }

}
